package com.py.credit.service;

import java.io.IOException;
import java.math.BigInteger;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.springframework.web.multipart.MultipartFile;

import com.py.credit.entity.GatewayUserEntity;
import com.py.framework.core.common.Page;

/**
 * 用户管理Service
 *
 * @author Leegern
 * @date 2018年4月25日
 */
public interface GatewayUserService {

	/**
	 * 根据用户账号删除标记查询用户信息
	 *
	 * @param params
	 *            查询条件
	 * @return
	 */
	GatewayUserEntity getUserByTwoPrincipal(Map<String, Object> params);

	/**
	 * 添加用户信息
	 *
	 * @param entity
	 *            用户实体
	 * @return
	 */
	void addUserInfo(GatewayUserEntity entity);

	/**
	 * 查询用户ID
	 *
	 * @param entity
	 *            用户实体
	 * @return
	 */
	BigInteger getUserInfo(String bm);
	
	/**
	 * 查询用户ID
	 *
	 * @param entity
	 *            用户实体
	 * @return
	 */
	GatewayUserEntity getUserInfoById(String id);


	/**
	 * 文件上传到本地
	 *
	 * @param file
	 * @param pathFile
	 * @param prefix
	 * @throws IllegalStateException
	 * @throws IOException
	 */
	void fileUpload(MultipartFile file, String pathFile, String prefix) throws IllegalStateException, IOException;

	/**
	 * 获取信用评价网站首页通知公告数据
	 *
	 * @param userId
	 * @return
	 */
	List<LinkedHashMap> getXypjNotice(long userId);

	/**
	 * 修改用户信息
	 *
	 * @return
	 */
	void modifyUserInfo(Map<String, Object> params);

	/**
	 * 实名认证
	 *
	 * @return
	 */
	void repeatModifyUserInfo(GatewayUserEntity entity);

	/**
	 * 设置默认头像
	 *
	 * @param destPath
	 * @throws IOException
	 */
	void setDefalutIcon(String destPath, String iconName) throws IOException;

	/**
	 * 获取证件照列表
	 *
	 * @param userId
	 * @param page
	 * @return
	 */
	List<LinkedHashMap> getZjPhotoListForPage(long userId, Page page);

	/**
	 * 证件照详情
	 *
	 * @param id
	 * @return
	 */
	LinkedHashMap getZjPhotoInfo(long id);

	/**
	 * 新增证件照
	 *
	 * @param zjName
	 * @param zjdw
	 * @param type
	 * @param filepath
	 * @param startTime
	 * @param endTime
	 * @param userId
	 */
	void addZjPhotoInfo(String zjName, String zjdw, String type, String filepath, String startTime, String endTime,
			long userId, String typeValue, String status);

	/**
	 * 修改证件照
	 *
	 * @param zjName
	 * @param zjdw
	 * @param type
	 * @param filepath
	 * @param startTime
	 * @param endTime
	 * @param id
	 */
	void modifyZjPhotoInfo(String zjName, String zjdw, String type, String filepath, String startTime, String endTime,
			long id, String typeValue);

	/**
	 * 获取报告历史查询列表
	 *
	 * @param sqr
	 * @param page
	 * @return
	 */
	List<LinkedHashMap> selectApplicatonReportListForPage(String sqr, String reportType, String reportStatus,
			String region, String industry, String startTime, String endTime, Page page);

	/**
	 * 删除证件照
	 *
	 * @param id
	 */
	void delZjPhotoInfo(long id);

	/**
	 * 判断该账户是否是敏感账户
	 *
	 * @param username
	 * @return
	 */
	int selectUserIsSensitiveAccount(String username);

	Map<String, Object> checkFromplatform(String tablename, GatewayUserEntity entity,String type);
}